#正则表达式
#字符串处理工具,需要导入模块re 语法比较复杂,可读性差 优点可以适用多种编程语言
#re.match(正则表达式,要匹配的字符串) 匹配符合xxx开头的字符串 没有返回None
#匹配成功使用group()提取数据
import re
res = re.match("[格温]","格温")
print(res)
print(res.group())
#匹配单个字符
# . 匹配任意一个字符,除了\n
# [] 匹配括号内列举的单个字符 [0-9] 代表匹配0-9之间的所有字符 a-z A-Z 一样
# \d 匹配数字
# \D 匹配非数字
# \s 匹配空格
# \S 匹配非空格
# \w 匹配单词字符 a-z A-Z 0-9 _ 汉字
# \W 匹配非单词字符
#匹配多个字符
# * 匹配前一个字符0次或无限次 即可有可无
# + 匹配前一个字符1次或无限次 即必须出现一次
# ? 匹配前一个字符1次或0次 即要么没有,要么就有一个
# {m} 匹配前一个字符出现m次
# {m,n} 匹配前一个字符出现m到n次
#匹配开头或结尾
# ^ 匹配开头 还代表对什么取反
# $ 匹配结尾
#匹配分组
# | 匹配左右任意一个表达式
# (ab) 将括号内的字符作为一个分组 (12|34|56)
# \num 引用分组num匹配到的字符串 num代表数字 比如\1 代表匹配第一个出现的分组
# (?p<name>) 分组起别名
# (?p=name) 引用别名为name分组匹配的字符串
#匹配任意网址
li = ["www.Gwen.com","www1杂项1.com","www.bill.com","www.hao.org","wwd.杂项2.com","www.杂项3.om","www.baidu.com","www5杂项45com","www.china.cn","www.czy.org","www.study.cn"]
for i in li:
    res = re.match(r"www(\.)\w*(\1)(com|org|cn)", i)
    if res:
        print(res.group())
    else:
        print("已被剔除: "+i)
# 随机生成网址并匹配指定网址
import random
print("---------------------")
li = []
tub = ("com","org","cn","net","gov","edu")
for i in range(30):
    # j = random.randint(97, 122)
    # strs = chr(j) * 3 + "."
    strs = "www."
    j = random.randint(0, 8)
    for l in range(j%9+1):
        k = random.randint(97, 122)
        strs += chr(k)
    j = random.randint(0, 4)
    strs += "."+tub[j%5]
    li.append(strs)
for i in li:
    res = re.match(r"www(\.)\w*(\1)(com|org|cn)", i)
    if res:
        print(res.group())
    else:
        print("已被剔除: " + i)
